import axios from "axios";
import { ElMessage } from "element-plus";
import type { AxiosInstance } from "axios";

const request: AxiosInstance = axios.create({
  //   baseURL:
  //     "https://mock.mengxuegu.com/mock/67380daa5c8e450d00cba53c/mengxuegu-vue3",
  baseURL: import.meta.env.VITE_APP_BASE_API,
  timeout: 10000,
});

// 添加请求拦截器
request.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
request.interceptors.response.use(
  (response) => {
    //console.log('响应拦截器', response);
    const { data } = response;
    // 正常响应给调用方式
    if (data.code === 200) {
      return data;
    }
    // 非正常弹出错误信息
    ElMessage.error(data.message);
    return Promise.reject(response); // 进入调用方catch部分
  },
  (error) => {
    const { message, response } = error;
    if (message.indexOf("timeout") != -1) {
      ElMessage.error("网络超时！");
    } else if (message == "Network Error") {
      ElMessage.error("网络连接错误！");
    } else {
      if (response.data) ElMessage.error(response.statusText);
      else ElMessage.error("接口路径找不到");
    }
    // 出现异常，则捕获处理（下面是交给调用处的catch)
    return Promise.reject(error);
  }
);
export default request;
